package cn.wolfcode.trip.api.controller;

import cn.wolfcode.trip.base.domain.CommentHistory;
import cn.wolfcode.trip.base.domain.StrategyComment;
import cn.wolfcode.trip.base.query.CommentQueryObject;
import cn.wolfcode.trip.base.service.ICommentService;
import cn.wolfcode.trip.base.service.IStrategyCommentService;
import cn.wolfcode.trip.base.util.JsonResult;
import cn.wolfcode.trip.base.vo.CommentTreeVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 用户评论
 */
@RestController
@RequestMapping("/comments")
public class CommentController {

    @Autowired
    private ICommentService commentService;
    @Autowired
    private IStrategyCommentService strategyCommentService;

    /**
     * 获取用户的二级评论
     * 1 资源 /comments/{commentId}/commentHistory?topicId=用户的id
     * 2 请求方式 g et
     * 3 请求参数 攻略评论的id, 用户的id
     * 4 返回结果 List<CommentTreeVo>
     */
    @GetMapping("{commentId}")
    public List<CommentTreeVo> getOverlapComment(CommentQueryObject qo){
        qo.setSort("ch.createTime desc");
        return commentService.getCommentByUserIdAndType(qo);
    }

    /**
     * 添加二级评论
     * 1 资源 /comments
     * 2 请求方式 post
     * 3 请求参数 commentHistory对象
     * 4 返回结果 jsonResult
     */
    @PostMapping
    public JsonResult addCommentHistory(CommentHistory commentHistory){
        JsonResult result = new JsonResult();
        try {
            commentService.addCommentHistory(commentHistory);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }


    /**
     * 清除某个用户的所有未读消息接口设计
     1 资源 /users/{id}/comment
     2 请求方式 put
     3 请求参数 用户id
     4 返回结果 jsonResult
     */
    @PutMapping
    public JsonResult changeStateByUserId(Long userId){
        commentService.changeStateByUserId(userId);
        return new JsonResult();
    }

    /**
     * 添加朋友圈评论
     * 1 资源 /comments/{topicId}/
     * 2 请求 方式 post
     * 3 请求参数 动态id,动态内容
     * 4 返回结果 jsonResult
     */
    @PostMapping("/{commentId}/commentHistory")
    public JsonResult addFriendComment(CommentHistory commentHistory){
        commentService.addFriendComment(commentHistory);
        return new JsonResult();
    }

    /**
     * 查询他的点评
     * 1 资源 /comment/{userId}/user?type=1
     * 2 请求方式 get
     * 3 请求参数 用户id
     * 4 返回结果
     */
    @GetMapping("{userId}/users")
    public List<StrategyComment> listStrategyComment(CommentQueryObject qo){
        return strategyCommentService.listStrategyComment(qo);
    }

}